home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_apache2.idb / usr / freeware / apache2 / manual / style / common.xsl.z / common.xsl
Extensible Markup Language  |  2002-07-08  |  23KB  |  493 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
  3. <xsl:stylesheet version="1.0"
  4.               xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  5.                   xmlns="http://www.w3.org/TR/xhtml1/strict">
  6.  
  7.   <!--                                                          -->
  8.   <!-- Please, don't hard-code output strings! Use the language -->
  9.   <!-- files and the translation "stuff"...                     -->
  10.   <!--                                                          -->
  11.  
  12.  <!-- Constants used for case translation -->
  13.  <xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
  14.  <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
  15.  
  16.  <!-- Defined parameters (overrideable) -->
  17.  <xsl:param name="relative-path" select="'.'"/>
  18.  
  19.   <!--                              -->
  20.   <!-- Builds the moduleindex page  -->
  21.   <!--                              -->
  22.   <xsl:template match="moduleindex">
  23.     <html>
  24.       <head>
  25.         <title>
  26.           <xsl:value-of select="title"/><xsl:value-of select="$messages/message[@name='apachetitle']"/>
  27.         </title>
  28.         <link rel="stylesheet" type="text/css" href="../style/manual.css" />
  29.       </head>
  30.       <body>
  31.         <blockquote>
  32.           <div align="center">
  33.             <img src="../images/sub.gif">
  34.             <xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='apachedocalt']"/></xsl:attribute></img>
  35.             <h3><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  36.           </div>
  37.           <h1 align="center"><xsl:value-of select="title"/></h1>
  38.           <xsl:apply-templates select="summary" />
  39.           <h2><xsl:value-of select="$messages/message[@name='corefeatures']"/></h2>
  40.           <dl>
  41.             <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis">
  42.               <xsl:sort select="name"/>
  43.               <xsl:if test="status='MPM' or status='Core'">
  44.                 <dt><a href="{name}.html"><xsl:value-of select="name"/></a></dt>
  45.                 <dd><xsl:apply-templates select="description"/></dd>
  46.               </xsl:if>
  47.             </xsl:for-each>
  48.           </dl>
  49.           <h2><xsl:value-of select="$messages/message[@name='othermodules']"/></h2>
  50.           <dl>
  51.             <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis">
  52.               <xsl:sort select="name"/>
  53.               <xsl:if test="status!='MPM' and status!='Core'">
  54.                 <dt><a href="{name}.html"><xsl:value-of select="name"/></a></dt>
  55.                 <dd><xsl:apply-templates select="description"/></dd>
  56.               </xsl:if>
  57.             </xsl:for-each>
  58.           </dl>
  59.         </blockquote>
  60.         <!-- Page footer -->
  61.         <hr />
  62.         <h3 align="center"><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  63.         <a href="./"><img src="../images/index.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='index']"/></xsl:attribute></img></a>
  64.         <a href="../"><img src="../images/home.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='home']"/></xsl:attribute></img></a>
  65.       </body>
  66.     </html>
  67.   </xsl:template> <!-- /moduleindex -->
  68.  
  69.   <!--                                                    -->
  70.   <!-- <directiveindex>                                   -->
  71.   <!-- Builds the directive index page                    -->
  72.   <!--                                                    -->
  73.   <xsl:template match="directiveindex">
  74.     <html>
  75.       <head>
  76.         <title>
  77.           <xsl:value-of select="title"/><xsl:value-of select="$messages/message[@name='apachetitle']"/>
  78.         </title>
  79.         <link rel="stylesheet" type="text/css" href="../style/manual.css" />
  80.       </head>
  81.       <body>
  82.         <blockquote>
  83.           <div align="center">
  84.             <img src="../images/sub.gif">
  85.             <xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='apachedocalt']"/></xsl:attribute></img>
  86.             <h3><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  87.           </div>
  88.           <h1 align="center"><xsl:value-of select="title"/></h1>
  89.           <xsl:apply-templates select="summary" />
  90.           <ul>
  91.             <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis/directivesynopsis">
  92.               <xsl:sort select="name"/>
  93.               <xsl:if test="not(@location)">
  94.                 <li><a href="{/modulesynopsis/name}.html#{translate(name,$uppercase,$lowercase)}"><xsl:value-of select="name"/></a></li>
  95.               </xsl:if>
  96.             </xsl:for-each>
  97.           </ul>
  98.         </blockquote>
  99.         <!-- Page footer -->
  100.         <hr />
  101.         <h3 align="center"><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  102.         <a href="./"><img src="../images/index.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='index']"/></xsl:attribute></img></a>
  103.         <a href="../"><img src="../images/home.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='home']"/></xsl:attribute></img></a>
  104.       </body>
  105.     </html>
  106.   </xsl:template> <!-- /directiveindex -->
  107.  
  108.   <!--                                                    -->
  109.   <!-- <modulesynopsis>                                   -->
  110.   <!-- Process an entire document into an HTML page       -->
  111.   <!--                                                    -->
  112.   <xsl:template match="modulesynopsis">
  113.     <html>
  114.       <head>
  115.         <!-- Do we need to translate this as well? -->
  116.         <xsl:comment> 
  117.           XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  118.                 This file is generated from xml source: DO NOT EDIT
  119.           XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  120.         </xsl:comment>
  121.         <xsl:apply-templates select="meta"/>
  122.         <title>
  123.           <xsl:value-of select="name"/><xsl:value-of select="$messages/message[@name='apachetitle']"/>
  124.         </title>
  125.         <link rel="stylesheet" type="text/css" href="../style/manual.css" />
  126.       </head>
  127.       <body>
  128.         <blockquote>
  129.           <div align="center">
  130.             <img src="../images/sub.gif">
  131.             <xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='apachedocalt']"/></xsl:attribute></img>
  132.             <h3><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  133.           </div>
  134.           <h1 align="center"><xsl:value-of select="$messages/message[@name='apachemodule']"/><xsl:text> </xsl:text> <xsl:value-of select="name"/></h1>
  135.           <!-- Description and module-headers -->
  136.           <table bgcolor="#cccccc" cellpadding="0" cellspacing="1"><tr><td>
  137.             <table bgcolor="#ffffff">
  138.               <tr>
  139.                 <td valign="top" nowrap="nowrap"><span class="help"><xsl:value-of select="$messages/message[@name='description']"/>:</span></td>
  140.                 <td><xsl:apply-templates select="description"/></td>
  141.               </tr>
  142.               <tr>
  143.                 <td nowrap="nowrap"><a class="help" href="module-dict.html#Status"><xsl:value-of select="$messages/message[@name='status']"/>:</a></td>
  144.                 <td><xsl:value-of select="status"/></td>
  145.               </tr>
  146.               <xsl:if test="identifier">
  147.                 <tr>
  148.                   <td nowrap="nowrap"><a class="help" href="module-dict.html#ModuleIdentifier"><xsl:value-of select="$messages/message[@name='moduleidentifier']"/>:</a> </td>
  149.                   <td><xsl:value-of select="identifier"/></td>
  150.                 </tr>
  151.               </xsl:if>
  152.               <xsl:if test="compatibility">
  153.                 <tr>
  154.                   <td valign="top" align="left"><a class="help" href="module-dict.html#Compatibility"><xsl:value-of select="$messages/message[@name='compatibility']"/>:</a> </td>
  155.                   <td><xsl:apply-templates select="compatibility"/></td>
  156.                 </tr>
  157.               </xsl:if>
  158.             </table>
  159.           </td></tr></table>
  160.    
  161.           <!-- Summary of module features/usage (1 to 3 paragraphs, optional) -->
  162.    
  163.           <xsl:if test="summary">
  164.             <h2><xsl:value-of select="$messages/message[@name='summary']"/></h2>
  165.             <xsl:apply-templates select="summary"/>
  166.           </xsl:if>
  167.    
  168.           <!-- Index of directives, automatically generated from directivesynopsis/name -->
  169.           <h2><xsl:value-of select="$messages/message[@name='directives']"/></h2>
  170.           <xsl:if test="directivesynopsis">
  171.             <ul>
  172.               <xsl:for-each select="directivesynopsis">
  173.                 <xsl:sort select="name"/>
  174.                 <xsl:variable name="name"><xsl:value-of select="name"/></xsl:variable>
  175.                 <xsl:variable name="lowername" select="translate($name, $uppercase, $lowercase)" />
  176.                 <xsl:if test="not(@location)">
  177.                   <li><a href="#{$lowername}"><xsl:value-of select="name"/></a></li>
  178.                 </xsl:if>
  179.                 <xsl:if test="./@location">
  180.                   <xsl:variable name="location"><xsl:value-of select="./@location"/></xsl:variable>
  181.                   <xsl:variable name="lowerlocation" select="translate($location, $uppercase, $lowercase)" />
  182.                   <li><a href="{$lowerlocation}.html#{$lowername}"><xsl:value-of select="name"/></a></li>
  183.                 </xsl:if>
  184.               </xsl:for-each>
  185.             </ul>
  186.           </xsl:if>
  187.           <xsl:if test="not(directivesynopsis)">
  188.             <p><xsl:value-of select="$messages/message[@name='nodirectives']"/></p>
  189.           </xsl:if>
  190.    
  191.           <xsl:if test="seealso">
  192.             <p><strong><xsl:value-of select="$messages/message[@name='seealso']"/></strong></p>
  193.             <ul>
  194.               <xsl:for-each select="seealso">
  195.                 <li><xsl:apply-templates/></li>
  196.               </xsl:for-each>
  197.             </ul>
  198.           </xsl:if>
  199.    
  200.           <!-- Sections of documentation about the module as a whole -->
  201.           <xsl:apply-templates select="section"/>
  202.           <hr />
  203.    
  204.           <!-- Directive documentation -->
  205.           <xsl:apply-templates select="directivesynopsis">
  206.             <xsl:sort select="name"/>
  207.           </xsl:apply-templates> 
  208.    
  209.         </blockquote>
  210.         <!-- Page footer -->
  211.         <h3 align="center"><xsl:value-of select="$messages/message[@name='apachehttpserver']"/></h3>
  212.         <a href="./"><img src="../images/index.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='index']"/></xsl:attribute></img></a>
  213.         <a href="../"><img src="../images/home.gif"><xsl:attribute name="alt"><xsl:value-of select="$messages/message[@name='home']"/></xsl:attribute></img></a>
  214.       </body>
  215.     </html>
  216.   </xsl:template><!-- /modulesynopsis -->
  217.   
  218.   
  219.   <!-- Subsections: get a lower level heading -->
  220.     <xsl:template match="section/section">
  221.      <xsl:variable name="href">
  222.         <xsl:value-of select="@id"/>
  223.       </xsl:variable>
  224.         <!-- Section heading -->
  225.       <xsl:if test="@id">
  226.         <h3><a name="{$href}"><xsl:apply-templates select="./title" mode="print"/></a></h3>
  227.       </xsl:if>
  228.       <xsl:if test="not(@id)">
  229.         <h3><xsl:apply-templates select="./title" mode="print"/></h3>
  230.       </xsl:if>
  231.         <!-- Section body -->
  232.           <xsl:apply-templates/>
  233.     </xsl:template>
  234.   
  235.   <!-- Process a documentation section -->
  236.     <xsl:template match="section">
  237.       <xsl:variable name="href">
  238.         <xsl:value-of select="@id"/>
  239.       </xsl:variable>
  240.         <!-- Section heading -->
  241.       <xsl:if test="@id">
  242.         <h2><a name="{$href}"><xsl:apply-templates select="./title" mode="print"/></a></h2>
  243.       </xsl:if>
  244.       <xsl:if test="not(@id)">
  245.         <h2><xsl:apply-templates select="./title" mode="print"/></h2>
  246.       </xsl:if>
  247.         <!-- Section body -->
  248.           <xsl:apply-templates/>
  249.     </xsl:template>
  250.   
  251.     <xsl:template match="section/title" mode="print">
  252.       <xsl:apply-templates/>
  253.     </xsl:template>
  254.   
  255.     <!-- Don't print the title twice -->
  256.     <xsl:template match="section/title"></xsl:template>
  257.   
  258.   <xsl:template match="directivesynopsis">
  259.  
  260.   <xsl:if test="not(@location)">
  261.   <xsl:variable name="name">
  262.     <xsl:value-of select="./name"/>
  263.   </xsl:variable>
  264.   <xsl:variable name="lowername" 
  265.      select="translate($name, $uppercase, $lowercase)" />
  266.   <!-- Directive heading gets both mixed case and lowercase anchors,
  267.        and includes lt/gt only for "section" directives -->
  268.   <h2><a name="{$name}"><xsl:if test="./@type='section'"><</xsl:if
  269.       ><xsl:value-of select="./name"/><xsl:if test="./@type='section'"
  270.       >></xsl:if></a><xsl:text> </xsl:text><a 
  271.       name="{$lowername}"><xsl:value-of select="$messages/message[@name='directive']"/></a></h2>
  272.  
  273. <!-- Directive header -->
  274. <table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1">
  275. <tr><td>
  276. <table bgcolor="#ffffff">
  277.   <tr>
  278.     <td nowrap="nowrap"><strong><xsl:value-of select="$messages/message[@name='description']"/>: </strong></td>
  279.     <td><xsl:value-of select="description"/></td>
  280.   </tr>
  281.   <tr>
  282.     <td nowrap="nowrap"><a class="help" href="directive-dict.html#Syntax"><xsl:value-of select="$messages/message[@name='syntax']"/>:</a> </td>
  283.     <td><xsl:apply-templates select="syntax"/></td>
  284.   </tr>
  285.   <xsl:if test="default">
  286.     <tr>
  287.       <td nowrap="nowrap"><a class="help" href="directive-dict.html#Default"><xsl:value-of select="$messages/message[@name='default']"/>:</a> </td>
  288.       <td><code><xsl:value-of select="default"/></code></td>
  289.     </tr>
  290.     </xsl:if>
  291.       <tr>
  292.         <td nowrap="nowrap"><a class="help" href="directive-dict.html#Context"><xsl:value-of select="$messages/message[@name='context']"/>:</a> </td>
  293.         <td><xsl:apply-templates select="contextlist"/></td>
  294.       </tr>
  295.       <xsl:if test="override">
  296.         <tr>
  297.           <td nowrap="nowrap"><a class="help" href="directive-dict.html#Override"><xsl:value-of select="$messages/message[@name='override']"/>:</a> </td>
  298.           <td><xsl:value-of select="override"/></td>
  299.         </tr>
  300.         </xsl:if>
  301.         <tr>
  302.           <td nowrap="nowrap"><a class="help" href="directive-dict.html#Status"><xsl:value-of select="$messages/message[@name='status']"/>:</a> </td>
  303.           <td><xsl:value-of select="/modulesynopsis/status"/></td>
  304.         </tr>
  305.         <tr>
  306.           <td nowrap="nowrap"><a class="help" href="directive-dict.html#Module"><xsl:value-of select="$messages/message[@name='module']"/>:</a> </td>
  307.           <td>
  308.             <xsl:if test="modulelist"><xsl:apply-templates select="modulelist"/></xsl:if>
  309.             <xsl:if test="not(modulelist)">
  310.               <xsl:value-of select="/modulesynopsis/name"/>
  311.             </xsl:if>
  312.             </td>
  313.           </tr>
  314.           <xsl:if test="compatibility">
  315.             <tr>
  316.               <td valign="top" align="left" nowrap="nowrap"><a class="help" href="directive-dict.html#Compatibility"><xsl:value-of select="$messages/message[@name='compatibility']"/>:</a> </td>
  317.               <td><xsl:value-of select="compatibility"/></td>
  318.             </tr>
  319.           </xsl:if>
  320.         </table>
  321.       </td></tr></table>
  322.  
  323.       <xsl:apply-templates select="usage"/>
  324.       <xsl:if test="seealso">
  325.         <p><strong><xsl:value-of select="$messages/message[@name='seealso']"/></strong></p>
  326.         <ul>
  327.           <xsl:for-each select="seealso">
  328.             <li><xsl:apply-templates/></li>
  329.           </xsl:for-each>
  330.         </ul>
  331.       </xsl:if>
  332.       <hr />
  333.     </xsl:if> <!-- not(@location) -->
  334.   </xsl:template> <!-- /directivesynopsis -->
  335.  
  336.   <!--                                                    -->
  337.   <!-- <contextlist>                                      -->
  338.   <!-- Passes through content                             -->
  339.   <!--                                                    -->
  340.   <xsl:template match="contextlist">
  341.     <xsl:apply-templates select="context"/>
  342.   </xsl:template> <!-- /contextlist -->
  343.  
  344.   <!--                                                    -->
  345.   <!-- <context>                                          -->
  346.   <!-- Each entry is separeted with a comma               -->
  347.   <!--                                                    -->
  348.   <xsl:template match="context">
  349.     <xsl:value-of select="." />
  350.     <xsl:if test="not(position()=last())">, </xsl:if>
  351.   </xsl:template> <!-- /context -->
  352.  
  353.   <!--                                                    -->
  354.   <!-- <modulelist>                                       -->
  355.   <!-- Passes through content                             -->
  356.   <!--                                                    -->
  357.   <xsl:template match="modulelist">
  358.     <xsl:apply-templates select="module"/>
  359.   </xsl:template> <!-- /modulelist -->
  360.  
  361.   <!--                                                    -->
  362.   <!-- <example>                                          -->
  363.   <!-- Examples are set in a "colored" table.             -->
  364.   <!--                                                    -->
  365.   <xsl:template match="example">
  366.     <blockquote>
  367.       <table cellpadding="10"><tr><td bgcolor="#eeeeee">
  368.         <xsl:apply-templates select="title" mode="print"/>
  369.         <code><xsl:apply-templates/></code>
  370.       </td></tr></table>
  371.     </blockquote>
  372.   </xsl:template> <!-- /example -->
  373.  
  374.   <!--                                                    -->
  375.   <!-- <example><title>                                   -->
  376.   <!--                                                    -->
  377.   <xsl:template match="example/title" mode="print">
  378.     <p align="center"><strong><xsl:apply-templates/></strong></p>
  379.   </xsl:template> <!-- /example/title -->
  380.  
  381.   <!--                                                    -->
  382.   <!-- <example><title>                                   -->
  383.   <!--                                                    -->
  384.   <xsl:template match="example/title"></xsl:template>
  385.  
  386.   <!--                                                    -->
  387.   <!-- <note>                                             -->
  388.   <!-- Notes are placed in a table. Uses different back-  -->
  389.   <!-- ground colors, depending on type of note.          -->
  390.   <!--                                                    -->
  391.   <xsl:template match="note">
  392.   <blockquote>
  393.   <table><tr><td>
  394.    <xsl:choose>
  395.     <xsl:when test="@type='warning'">
  396.      <xsl:attribute name="bgcolor">#ffe5f5</xsl:attribute>
  397.     </xsl:when>
  398.     <xsl:otherwise>
  399.      <xsl:attribute name="bgcolor">#e0e5f5</xsl:attribute>
  400.     </xsl:otherwise>
  401.    </xsl:choose>
  402.      <xsl:apply-templates/>
  403.   </td></tr></table>
  404.   </blockquote>
  405.   </xsl:template>  <!-- /note -->
  406.  
  407.  
  408.   <!--                                                    -->
  409.   <!-- <note><title>                                      -->
  410.   <!--                                                    -->
  411.   <xsl:template match="note/title">
  412.      <p align="center"><strong><xsl:apply-templates/></strong></p>
  413.   </xsl:template> <!-- /note/title -->
  414.  
  415.   <!--                                                    -->
  416.   <!-- <directive>                                        -->
  417.   <!-- Inserts link to another directive, which might be  -->
  418.   <!-- in another module. References are converted into   --> 
  419.   <!-- lower case.                                        -->
  420.   <!--                                                    -->
  421.   <xsl:template match="directive">
  422.     <xsl:if test="@module">
  423.       <xsl:variable name="module">
  424.         <xsl:value-of select="./@module"/>
  425.       </xsl:variable>
  426.       <xsl:variable name="directive">
  427.         <xsl:value-of select="."/>
  428.       </xsl:variable>
  429.       <xsl:variable name="lowerdirective" select="translate($directive, $uppercase, $lowercase)" />
  430.       <xsl:if test="@module=/modulesynopsis/name">
  431.         <a class="directive" href="#{$lowerdirective}"><code class="directive"><xsl:if test="./@type='section'"><</xsl:if><xsl:value-of select="."/><xsl:if test="./@type='section'">></xsl:if></code></a>
  432.       </xsl:if>
  433.       <xsl:if test="@module!=/modulesynopsis/name">
  434.         <a class="directive" href="{$module}.html#{$lowerdirective}"><code class="directive"><xsl:if test="./@type='section'"><</xsl:if><xsl:value-of select="."/><xsl:if test="./@type='section'">></xsl:if></code></a>
  435.       </xsl:if>
  436.     </xsl:if>
  437.     <xsl:if test="not(@module)">
  438.        <code class="directive"><xsl:if test="./@type='section'"><</xsl:if><xsl:value-of select="."/><xsl:if test="./@type='section'">></xsl:if></code>
  439.     </xsl:if>
  440.   </xsl:template> <!-- /directive -->
  441.  
  442.   <!--                                                    -->
  443.   <!-- <module>                                           -->
  444.   <!-- Inserts a link to refereed module                  -->
  445.   <!--                                                    -->
  446.   <xsl:template match="module">
  447.     <code><a href="{.}.html"><xsl:value-of select="."/></a></code><xsl:if test="parent::modulelist"><xsl:if test="not(position()=last())">, </xsl:if>
  448.     </xsl:if>
  449.   </xsl:template> <!-- /module -->
  450.  
  451.   <!--                                                    -->
  452.   <!-- <summary>                                          -->
  453.   <!-- Passes through content                             -->
  454.   <!--                                                    -->
  455.   <xsl:template match="summary">
  456.     <xsl:apply-templates/>
  457.   </xsl:template> <!-- /summary -->
  458.  
  459.   <!--                                                    -->
  460.   <!-- <description>                                      -->
  461.   <!-- Passes through content                             -->
  462.   <!--                                                    -->
  463.   <xsl:template match="description">
  464.     <xsl:apply-templates/>
  465.   </xsl:template> <!-- /description -->
  466.  
  467.   <!--                                                    -->
  468.   <!-- <usage>                                            -->
  469.   <!-- Passes through content                             -->
  470.   <!--                                                    -->
  471.   <xsl:template match="usage">
  472.     <xsl:apply-templates/>
  473.   </xsl:template> <!-- /usage -->
  474.  
  475.   <!--                                                    -->
  476.   <!-- <syntax>                                           -->
  477.   <!-- Passes through content                             -->
  478.   <!--                                                    -->
  479.   <xsl:template match="syntax">
  480.     <xsl:apply-templates/>
  481.   </xsl:template> <!-- /syntax -->
  482.  
  483.   <!--                                                    -->
  484.   <!-- Process everything else by just passing it through -->
  485.   <!--                                                    -->
  486.   <xsl:template match="*|@*">
  487.     <xsl:copy>
  488.       <xsl:apply-templates select="@*|*|text()"/>
  489.     </xsl:copy>
  490.   </xsl:template>
  491.  
  492. </xsl:stylesheet>
  493.